package com.kfd.dao;

import com.kfd.bean.Eadmin;
import com.kfd.bean.Express;
import com.kfd.exception.DuplicateCodeException;
import com.kfd.exception.DuplicateNumberException;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 定义eadmin表的操作规范
 */
public interface EadminDao {

    /**
     * 根据用户名，更新用户ip，和上次登陆时间
     * @param username  用户名
     * @param date  当前时间
     * @param ip    当前ip
     */
    void updateLoginIpTime(String username, Date date, String ip);

    /**
     * 登录方法
     * @param username  用户输入的用户名
     * @param password  用户输入的密码
     * @return  登陆成功的用户手机号
     */
    String login(String username,String password);

    /**
     * 控制台方法
     * @return  返回控制台所需的信息
     */
    List<Map<String, Integer>> console();

    /**
     * 查询所有用户
     * @param limit 是否开启分页；true表示开启分页
     * @param offset    sql语句起始下标
     * @param pageNumber    共查询多少条
     * @param status    0，用户页面，1.快递员页面
     * @return  用户的集合
     */
    List<Eadmin> findAll(boolean limit, int offset, int pageNumber ,int status);

    /**
     * 根据手机号查询用户信息
     * @param phone    用户手机号
     * @param status    0,用户；1.快递员
     * @return  查询到的用户信息，有可能为空返回null，手机号不存在
     */
    Eadmin findByPhone(String phone,int status);

    /**
     * 用户的录入
     * @param eadmin   用户信息
     * @param status   0.用户，1.快递员
     * @return  返回是否录入成功
     */
    boolean insert(Eadmin eadmin,int status) throws DuplicateCodeException, DuplicateNumberException;

    /**
     * 用户修改
     * @param eadmin   用户信息
     * @return  返回是否修改成功
     */
    boolean update(Eadmin eadmin);

    /**
     * 快递的删除用户删除
     * param id   用户的id
     * @return  返回是否删除成功
     */
    boolean delete(int id,int status);

    /**
     * 根据ID查询对应的用户信息
     * @param id
     * @return
     */
    Eadmin findById(int id);
}
